// 导出相应的验证规则
import {
    userCheckAccount
} from '@/api/user'
export default {
    // 验证的函数名称必须和要验证的表单选项的name属性名字保持一致
    account(value) {
        if (!value) return '用户名不能为空'

        // 字母开头且6-20个字符
        if (!/^[a-zA-Z]\w{5,19}$/.test(value)) return '用户名必须是字母开头且6-20个字符'
        return true
    },
    password(value) {
        if (!value) return '密码不能为空'

        if (!/^\w{6,24}$/.test(value)) return '密码必须是6-24个字母数字下划线组成的字符'
        return true
    },
    mobile(value) {
        if (!value) return '请输入手机号'
        if (!/^1[3-9]\d{9}$/.test(value)) return '手机号格式错误'
        return true
    },
    code(value) {
        if (!value) return '请输入验证码'
        if (!/^\d{6}$/.test(value)) return '验证码是6个数字'
        return true
    },
    isAgree(value) {
        if (!value) return '请勾选同意用户协议'
        return true
    },
    // 验证用户名的唯一性
    async accountApi(value) {
        if (!value) return '请输入用户名'
        if (!/^[a-zA-Z]\w{5,19}$/.test(value)) return '字母开头且6-20个字符'

        // 服务端校验
        const {
            result
        } = await userCheckAccount(value)
        if (result.valid) return '用户名已存在'
        return true
    },
    // 确认密码
    rePassword(value, {
        form
    }) {
        if (!value) return '请输入密码'
        if (!/^\w{6,24}$/.test(value)) return '密码是6-24个字符'
            // 校验密码是否一致  form表单数据对象
        if (value !== form.password) return '两次输入的密码不一致'
        return true
    }
}